package com.twobu.twobuinsight.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.concurrent.TimeUnit;

/**
 * 限流注解
 * 基于Redis实现的限流功能，根据用户ID和方法签名进行限流
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface RateLimit {

    /**
     * 限流时间单位
     */
    TimeUnit timeUnit() default TimeUnit.SECONDS;

    /**
     * 限流时间值
     */
    int timeValue() default 1;

    /**
     * 限流次数
     */
    int count() default 10;

    /**
     * 限流描述，将用于日志和异常消息
     */
    String description() default "接口访问频率超限";
}
